/**
 *
 * @name events
 * @namespace
 */

/**
 * EventEmitter.
 *
 * Many objects in Node emit events: a TCP server emits an event each time there is a stream, a
 * child process emits an event when it exits. All objects which emit events are instances of
 * <code>events.EventEmitter</code>.
 *
 * @class
 * @exports EventEmitter as events.EventEmitter
 */
function EventEmitter(){};
/**
 * Adds a listener to the end of the listeners array for the specified event.
 *
 * @param event
 * @param listener
 */
EventEmitter.prototype.addListener = function(/**String*/event, /**Function*/listener){};
/**
 * Remove a listener from the listener array for the specified event.
 * <b>Caution:</b> changes array indices in the listener array behind the listener.
 *
 * @param event
 * @param listener
 */
EventEmitter.prototype.removeListener = function(/**String*/event, /**Function*/listener){};
/**
 * Removes all listeners from the listener array for the specified event.
 *
 * @param event
 */
EventEmitter.prototype.removeAllListener = function(/**String*/event){};
/**
 * Returns an array of listeners for the specified event.
 *
 * This array can be manipulated, e.g. to remove listeners.
 *
 * @param event
 */
EventEmitter.prototype.listeners = function(/**String*/event)/**Function[]*/{};
/**
 * Execute each of the listeners in order with the supplied arguments.
 *
 * @param event
 * @param arg1
 * @param argN
 */
EventEmitter.prototype.emit = function(/**String*/event, /**mixed*/arg1, /**mixed*/argN){};
/**
 * This event is made any time someone adds a new listener.
 *
 * @name EventEmitter#newListener
 * @event
 * @param {String} event
 * @param {Function} listener
 */